package com.dupt.system.service.impl;

import java.util.List;

import com.dupt.common.utils.DateUtils;
import com.dupt.common.utils.SecurityUtils;
import com.dupt.system.domain.param.MaterialBillMainParam;
import com.dupt.system.domain.vo.MaterialBillMainVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dupt.system.mapper.MaterialBillMainMapper;
import com.dupt.system.domain.MaterialBillMain;
import com.dupt.system.service.IMaterialBillMainService;

/**
 * 物料清单主Service业务层处理
 * 
 * @author zhuanyu.sun
 * @date 2025-06-15
 */
@Service
public class MaterialBillMainServiceImpl implements IMaterialBillMainService
{
    @Autowired
    private MaterialBillMainMapper materialBillMainMapper;

    /**
     * 查询物料清单主
     * 
     * @param materialBillMainId 物料清单主主键
     * @return 物料清单主
     */
    @Override
    public MaterialBillMain selectMaterialBillMainByMaterialBillMainId(String materialBillMainId)
    {
        return materialBillMainMapper.selectMaterialBillMainByMaterialBillMainId(materialBillMainId);
    }

    /**
     * 查询物料清单主列表
     * 
     * @param materialBillMainParam 物料清单主
     * @return 物料清单主
     */
    @Override
    public List<MaterialBillMainVo> selectMaterialBillMainList(MaterialBillMainParam materialBillMainParam)
    {
        return materialBillMainMapper.selectMaterialBillMainList(materialBillMainParam);
    }

    /**
     * 新增物料清单主
     * 
     * @param materialBillMain 物料清单主
     * @return 结果
     */
    @Override
    public int insertMaterialBillMain(MaterialBillMain materialBillMain)
    {
        materialBillMain.setMaterialBillNo("WLQD" + DateUtils.dateTimeNow());
        materialBillMain.setCreateBy(SecurityUtils.getLoginUser().getUsername());
        materialBillMain.setCreateTime(DateUtils.getNowDate());
        return materialBillMainMapper.insertMaterialBillMain(materialBillMain);
    }

    /**
     * 修改物料清单主
     * 
     * @param materialBillMain 物料清单主
     * @return 结果
     */
    @Override
    public int updateMaterialBillMain(MaterialBillMain materialBillMain)
    {
        materialBillMain.setUpdateTime(DateUtils.getNowDate());
        return materialBillMainMapper.updateMaterialBillMain(materialBillMain);
    }

    /**
     * 批量删除物料清单主
     * 
     * @param materialBillMainIds 需要删除的物料清单主主键
     * @return 结果
     */
    @Override
    public int deleteMaterialBillMainByMaterialBillMainIds(String[] materialBillMainIds)
    {
        return materialBillMainMapper.deleteMaterialBillMainByMaterialBillMainIds(materialBillMainIds);
    }

    /**
     * 删除物料清单主信息
     * 
     * @param materialBillMainId 物料清单主主键
     * @return 结果
     */
    @Override
    public int deleteMaterialBillMainByMaterialBillMainId(Long materialBillMainId)
    {
        return materialBillMainMapper.deleteMaterialBillMainByMaterialBillMainId(materialBillMainId);
    }

    /**
     * 根据物料ID查询物料清单主
     * @param materialModeId
     * @return
     */
    @Override
    public MaterialBillMain selectMaterialBillMainByMaterialModeId(String materialModeId) {
        return materialBillMainMapper.selectMaterialBillMainByMaterialModeId(materialModeId);
    }

    /**
     * 根据物料采集ID查询物料清单主
     * @param materialCollectId
     * @return
     */
    @Override
    public MaterialBillMain selectMaterialBillMainByMaterialCollectId(Long materialCollectId) {
        return materialBillMainMapper.selectMaterialBillMainByMaterialCollectId(materialCollectId);
    }
}
